In [1]:
import json 
import numpy as np
import os
import pandas as pd
import plotly.express as px
import plotly
plotly.offline.init_notebook_mode()
In [2]:
def get_mean_history(histories):
    return np.mean(histories, axis=0)


def get_std_history(histories):
    return np.std(histories, axis=0)
In [3]:
problem = "Griewank"
path = f"./{problem}/results"

dict_for_show_50_Griewank = dict()
params_list_50 = []
history_list_50 = []
iteration_list_50 = []
std_list_50 = []
dict_for_show_100_Griewank = dict()
params_list_100 = []
history_list_100 = []
iteration_list_100 = []
std_list_100 = []

for filename in os.listdir(path):
    full_path = path + "/" + filename
    with open(full_path) as file:
        results = json.load(file)
        if results["number_of_variables"] == 50:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_m={results["mutation"]}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            iteration_num = len(results['results'][0])
            params_list_50 += [params]*iteration_num
            history_list_50 += list(get_mean_history(results['results']))
            iteration_list_50 += range(iteration_num)
            std_list_50 += list(get_std_history(results['results']))
            
            
        if results["number_of_variables"] == 100:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_m={results["mutation"]}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            
            iteration_num = len(results['results'][0])
            params_list_100 += [params]*iteration_num
            history_list_100 += list(get_mean_history(results['results']))
            iteration_list_100 += range(iteration_num)
            std_list_100 += list(get_std_history(results['results']))


dict_for_show_100_Griewank.update({'params': params_list_100, 
                          'mean max fitness': history_list_100, 
                          'iteration': iteration_list_100, 
                          'std': std_list_100})
dict_for_show_50_Griewank.update({'params': params_list_50, 
                          'mean max fitness': history_list_50, 
                          'iteration': iteration_list_50, 
                          'std': std_list_50})
In [4]:
pd.options.plotting.backend = "plotly"
df_100_Griewank = pd.DataFrame(dict_for_show_100_Griewank)

fig = px.line(df_100_Griewank, x="iteration", y="mean max fitness", color='params',  
              log_y=True, title="Griewank 100") # error_y="std",

fig.show()
In [5]:
pd.options.plotting.backend = "plotly"
df_50_Griewank = pd.DataFrame(dict_for_show_50_Griewank)

fig = px.line(df_50_Griewank, x="iteration", y="mean max fitness", color='params', 
              log_y=True, title="Griewank 50") # error_y="std",

fig.show()
In [6]:
problem = "Griewank"
path = f"./{problem}/results_elite"

dict_for_show_50_Griewank_elite = dict()
params_list_50 = []
history_list_50 = []
iteration_list_50 = []
std_list_50 = []
dict_for_show_100_Griewank_elite = dict()
params_list_100 = []
history_list_100 = []
iteration_list_100 = []
std_list_100 = []

for filename in os.listdir(path):
    full_path = path + "/" + filename
    if "ipynb_checkpoints" in full_path:
        continue
    with open(full_path) as file:
        results = json.load(file)
        if results["number_of_variables"] == 50:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_mutation={results["push"]:.2f},{results["pull"]:.2f},{results["random"]:.2f}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            iteration_num = len(results['results'][0])
            params_list_50 += [params]*iteration_num
            history_list_50 += list(get_mean_history(results['results']))
            iteration_list_50 += range(iteration_num)
            std_list_50 += list(get_std_history(results['results']))
            
            
        if results["number_of_variables"] == 100:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_mutation={results["push"]:.2f},{results["pull"]:.2f},{results["random"]:.2f}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            
            iteration_num = len(results['results'][0])
            params_list_100 += [params]*iteration_num
            history_list_100 += list(get_mean_history(results['results']))
            iteration_list_100 += range(iteration_num)
            std_list_100 += list(get_std_history(results['results']))


dict_for_show_100_Griewank_elite.update({'params': params_list_100, 
                          'mean max fitness': history_list_100, 
                          'iteration': iteration_list_100, 
                          'std': std_list_100})
dict_for_show_50_Griewank_elite.update({'params': params_list_50, 
                          'mean max fitness': history_list_50, 
                          'iteration': iteration_list_50, 
                          'std': std_list_50})
In [7]:
pd.options.plotting.backend = "plotly"
df_100_Griewank_elite = pd.DataFrame(dict_for_show_100_Griewank_elite)

fig = px.line(df_100_Griewank_elite, x="iteration", y="mean max fitness", color='params',  log_y=True, title="Griewank Elite 100") # error_y="std",

fig.show()
In [8]:
pd.options.plotting.backend = "plotly"
df_50_Griewank_elite = pd.DataFrame(dict_for_show_50_Griewank_elite)

fig = px.line(df_50_Griewank_elite, x="iteration", y="mean max fitness", color='params', 
              log_y=True, title="Griewank Elite 50") # error_y="std",

fig.show()
In [9]:
df_100_Griewank_sorted = df_100_Griewank.sort_values(by=["iteration", "mean max fitness"], ascending=[False, True])

df_100_Griewank_elite_sorted = df_100_Griewank_elite.sort_values(by=["iteration", "mean max fitness"], ascending=[False, True])

df_50_Griewank_sorted = df_50_Griewank.sort_values(by=["iteration", "mean max fitness"], ascending=[False, True])

df_50_Griewank_elite_sorted = df_50_Griewank_elite.sort_values(by=["iteration", "mean max fitness"], ascending=[False, True])
In [10]:
best_100_Griewank = list(df_100_Griewank_sorted["params"][:3])
best_100_Griewank_elite = list(df_100_Griewank_elite_sorted["params"][:3])
best_50_Griewank = list(df_50_Griewank_sorted["params"][:3])
best_50_Griewank_elite = list(df_50_Griewank_elite_sorted["params"][:3])
In [11]:
dict_for_show_50_Griewank_comp = dict()
params_list_50 = []
history_list_50 = []
iteration_list_50 = []
std_list_50 = []
dict_for_show_100_Griewank_comp = dict()
params_list_100 = []
history_list_100 = []
iteration_list_100 = []
std_list_100 = []

problem = "Griewank"
path = f"./{problem}/results_elite"



for filename in os.listdir(path):
    full_path = path + "/" + filename
    if "ipynb_checkpoints" in full_path:
        continue
    with open(full_path) as file:
        results = json.load(file)
        if results["number_of_variables"] == 50:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_mutation={results["push"]:.2f},{results["pull"]:.2f},{results["random"]:.2f}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            
            if params in best_50_Griewank_elite:
                iteration_num = len(results['results'][0])
                params_list_50 += [params + "_elite"]*iteration_num
                history_list_50 += list(get_mean_history(results['results']))
                iteration_list_50 += range(iteration_num)
                std_list_50 += list(get_std_history(results['results']))
            
            
        if results["number_of_variables"] == 100:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_mutation={results["push"]:.2f},{results["pull"]:.2f},{results["random"]:.2f}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            if params in best_100_Griewank_elite:
                iteration_num = len(results['results'][0])
                params_list_100 += [params + "_elite"]*iteration_num
                history_list_100 += list(get_mean_history(results['results']))
                iteration_list_100 += range(iteration_num)
                std_list_100 += list(get_std_history(results['results']))




dict_for_show_100_Griewank_comp.update({'params': params_list_100, 
                          'mean max fitness': history_list_100, 
                          'iteration': iteration_list_100, 
                          'std': std_list_100})
dict_for_show_50_Griewank_comp.update({'params': params_list_50, 
                          'mean max fitness': history_list_50, 
                          'iteration': iteration_list_50, 
                          'std': std_list_50})



problem = "Griewank"
path = f"./{problem}/results"

for filename in os.listdir(path):
    full_path = path + "/" + filename
    with open(full_path) as file:
        results = json.load(file)
        if results["number_of_variables"] == 50:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_m={results["mutation"]}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            if params in best_50_Griewank:
                iteration_num = len(results['results'][0])
                params_list_50 += [params]*iteration_num
                history_list_50 += list(get_mean_history(results['results']))
                iteration_list_50 += range(iteration_num)
                std_list_50 += list(get_std_history(results['results']))
            
            
        if results["number_of_variables"] == 100:
        
            params = f'ps={results["population_size"]}_ss={results["selection_size"]}_m={results["mutation"]}_mp={results["mutation_probability"]}_cr={results["clone_rate"]}_rc={results["random_cells_number"]}'
            if params in best_100_Griewank:
                iteration_num = len(results['results'][0])
                params_list_100 += [params]*iteration_num
                history_list_100 += list(get_mean_history(results['results']))
                iteration_list_100 += range(iteration_num)
                std_list_100 += list(get_std_history(results['results']))
                

dict_for_show_100_Griewank_comp.update({'params': params_list_100, 
                          'mean max fitness': history_list_100, 
                          'iteration': iteration_list_100, 
                          'std': std_list_100})
dict_for_show_50_Griewank_comp.update({'params': params_list_50, 
                          'mean max fitness': history_list_50, 
                          'iteration': iteration_list_50, 
                          'std': std_list_50})
In [12]:
pd.options.plotting.backend = "plotly"
df_100_Griewank_comp = pd.DataFrame(dict_for_show_100_Griewank_comp)

fig = px.line(df_100_Griewank_comp, x="iteration", y="mean max fitness", color='params', 
              log_y=True, title="Griewank 100 - Best 3 comparison") # error_y="std",

fig.show()
In [13]:
pd.options.plotting.backend = "plotly"
df_50_Griewank_comp = pd.DataFrame(dict_for_show_50_Griewank_comp)

fig = px.line(df_50_Griewank_comp, x="iteration", y="mean max fitness", color='params', 
              log_y=True, title="Griewank 50 - Best 3 comparison") # error_y="std",

fig.show()
In [ ]: